import scala.actors.Actor
import scala.actors.Actor._

class Programmer(secretary: Actor) extends Actor {
  var random = new scala.util.Random

  def act() {
    loop {
      react {
        case `wantToMakeAppointment` =>
          println("\t - Programmer > Wil afspraak maken.");
          secretary ! requestAppointment;
          
        case `sentInvite` =>
          println("\t - Programmer > Uitnodiging ontvangen, gaat naar afspraak.");
          Thread.sleep(random.nextInt(1000)); // Simuleer wachttijd
          println("\t - Programmer > Is bij afspraak aangekomen.");
          sender ! arrived;

          react {
            case `notifyEndOfMeeting` =>
              println("\t - Programmer > Overleg is afgelopen.");
              Thread.sleep(random.nextInt(10000));
              self ! wantToMakeAppointment;
          }
          
        case `teamLeaderIsBusy` =>
          println("\t - Programmer > Terug aan het werk teamleader is al in bespreking.");
          // Busy, wacht random tijd om daarna nog eens te proberen
          Thread.sleep(random.nextInt(10000)); // Simuleer wachttijd
          self ! wantToMakeAppointment;
      }
    }
  }
}

case object Programmer extends Message